#include <iostream>
using namespace std;
const int N = 100010;

int n;
int path[N]; // 记录完整数组
bool st[N];  // 记录数字i是否已经被使用

void dfs(int u) // 对下标为u位进行搜索
{
    if (u == n) // 搜索完全
    {
        for (int i = 0; i < n; i++)
            printf("%d", path[i]);
        puts("");
        return; // 回溯
    }
    for (int i = 1; i <= n; i++) // 从1到n进行遍历
    {
        if (!st[i]) // 未被使用
        {
            path[u] = i;   // 让下标为u位为i
            st[i] = true;  // i数字已使用
            dfs(u + 1);    // 搜索下一位
            st[i] = false; // 恢复该数字未使用
        }
    }
}
int main()
{
    cin >> n;
    dfs(0); // 从下标为0开始搜索
    return 0;
}
